/**
 * 这里写：全局前置导航守卫,目的是进行统一登录身认认证
 */

import router from "./router";
import store from "./store";

/**
 * 创建全局前置导航守卫beforeEach
 *
 * 请求一个路由时，跳转之前的钩子函数beforeEach
 */
router.beforeEach((to, from, next) => {
  //路由跳转前，执行这里的代码

  //登录和注册路由不需要验证，登录才会生成token，所以需要排除掉登录注册路由请求

  //1.白名单，不需要认证的路由
  //  let whiteArry=['/login','/']
  let blackArry = ["/cart"]; //购物车页面需要登录身份验证

  let token = store.getters.getToken;

  if (!token) {
    if (blackArry.indexOf(to.path) !== -1) {
      //3.是否登录验证，，登录会生成token保存在localStorage中，所以直接判断token是否存在也就是判断是否登录
      next("/emptycart");
    } //若token存在，也就是已登录，则直接放行
    else {
      next(); //若token不存在，未登录，则直接跳转到登录路由界面
    }
  }
  //2.to.path是要跳转的路由，，若要跳转的路由是在白名单里，则直接放行，正常跳转
  //  return  //结束此函数，不再往下执行
  else {
    next();
  }
});
